callback就是將function當作參數傳入另外一個函式裡
function mainFunction(callback){ //這個callback是一個變數名稱,一開始他還不知道他是誰
var someData = 'Hello';
callback(someData); //這裡定義了此函式:此函式的callback這個function被執行,且到時候會將someData傳入參數
}
mainFunction(function(a){ //這時候上面的callback知道他是誰了,callback (是) 這行函數。傳入的時候a = someData
console.log(a)); //印出Hello
})
mainFunction(function(b){ //同上執行步驟
console.log(b);
})
執行結果
Hello
Hello
function oldFunction(){
console.log('old');
}
let newFunction = oldFunction;
// 確實有oldFunciotn的函式等著被觸發,但是只要沒有在後面加上(),就不會有觸發行為。所以這裡只是指定變數名稱但沒有執行的行為
// 試想,若newFunction = 3
// 那麼底下的觸發就會變成3(),這樣結果會找不到叫做function 3的可以執行而錯誤
newFunction();
function mainFunction(callback){ //第一步:一開始callback不知道他是誰
callback(); //最後:知道這裡要執行cool()
}
function cool(){
console.log('coooool'); //這裡定義了cool()要做的事情
}
mainFunction(cool); // 然後第二步:cllback (是) cool
let a = 123;
console.log(a);
//結果:123
但是
{let a = 123}
console.log(a);
//undefine
//{}大括號是表示區塊
let add = function(a,b) {
return a + b; //return是output = 5
}
let calc = function(num1, num2, callback) {
return callback(num1, num2); //知道了去執行add(2,3)
}//如同下:
let calc = function(num1, num2, callback) {
let result = callback(num1, num2);
return result;
}
console.log(calc(2,3,add)); //知道callback (是)add